﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Capa_Entidad;
using System.Data;
using System.Data.SqlClient;
using Capa_Negocio_Facade;
using Capa_Negocio_Interface;
using System.Collections;

public partial class Ventas_wfCita : System.Web.UI.Page
{
    private IFacadeRegistrarCita objFacadeCita = new FacadeRegistrarCita();
    private List<ADM_CITA> listaCita = null;
    private List<ADM_PACIENTE> listaPacientes = null;
    private List<V_Medico_Especialidad> listaMedicos = null;

    //private static string CodPaciente;
    private static Int32 Id_Medico;
    private static string vOperacion = "C";
    private static Boolean fl_Buscar = false;
    private static String msg, titulo;
    private static Boolean ok = false;
    private static int? idpaciente = 0;

    protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
            if (!IsPostBack)
            {
                //CodPaciente = Request.QueryString["CodPaciente"].ToString();
                vOperacion = (Session["Operacion"] != null) ? (String)Session["Operacion"] : vOperacion;

                cboTipoAtencion.DataSource = objFacadeCita.listarTipoAtencion();
                cboTipoAtencion.DataBind();

                cboEspecialidad.DataSource = objFacadeCita.listarEspecialidad();
                cboEspecialidad.DataBind();

                MostrarEstadoCita();
                cboestado.SelectedIndex=1;
                if (vOperacion == "M")
                {
                    lblNumeroCita.Text = String.Format("{0} {1}", lblNumeroCita.Text, (Int32)Session["IDCita"]);
                    Mostra_Cita((Int32)Session["IDCita"]);
                    btnBuscar.Enabled = false;
                    cboestado.Enabled = true;
                }
                else
                {
                    cboestado.Enabled = false;
                    btnBuscar.Enabled = true;
                    Blank();
                }
                if (fl_Buscar)
                {
                    fl_Buscar = false;
                    txtIdPaciente.Text = (String)Session["CodPaciente"];
                    Cargar_Datos_paciente2(txtIdPaciente.Text);
                }
            }
        }
        catch (Exception ex)
        {
            titulo = "ERROR AL CARGAR LA PAGINA";
            msg = ex.Message;
            MostrarComentario(msg, titulo);
        }
    }

    private void Blank()
    {
        txtIdPaciente.Text = "";
        txtIdPromocion.Text = "";
        txtNombreCompleto.Text = "";
        txtNumeroDoc.Text = "";
        txtObservacion.Text = "";
        txtTipoDoc.Text = "";
    }

    public void MostrarEstadoCita() {
        List<CIT_ESTADO_CITA> lista = new List<CIT_ESTADO_CITA>();
        lista = objFacadeCita.ListarEstadoCita();
        
        cboestado.DataSource = lista;
        cboestado.TextField = "ESC_DESCRIPCION";
        cboestado.ValueField = "ESC_ID_ESTADO_CITA";
        cboestado.DataBind();
     
        
    }
    //public void MostrarElementoSeleccionado(int item) { 
    //    int seleccionado=
    //    switch(item){
    //        case 1: ;break;
    //    }
    //}
    private void Mostra_Cita(int IdCita)
    {
        try
        {
            listaCita = new List<ADM_CITA>();
            objFacadeCita = new FacadeRegistrarCita();
            listaCita = objFacadeCita.listarCitas(IdCita);
            int cant = listaCita.Count();
            if (cant <= 0)
            {
                ok = false;
                msg = "No Hay Datos para Cita Seleccionada";
                Redirecionar(msg, ok);
                return;
            }
            String codPaciente, idpromocion, observacion;
            DateTime? fechacita;
            int? tipoatencion, especialidad, idmedico;
            codPaciente = listaCita[0].ADM_PACIENTE.PAC_CODIGO_PACIENTE.Trim();
            if (CargarDatosPaciente(codPaciente))
            {
                idpaciente = listaCita[0].PAC_ID_PACIENTE;
                tipoatencion = listaCita[0].GEN_TIPE_TIPO_ID_ATENCION;
                idpromocion = listaCita[0].MAR_ID_PROMOCION;
                observacion = listaCita[0].CIT_OBSERVACION;
                especialidad = listaCita[0].ESP_ID_ESPECIALIDAD;
                fechacita = listaCita[0].CIT_FECHA;
                idmedico = listaCita[0].PRM_PROGRAMACION_MEDICA.MED_ID_MEDICO;
                Id_Medico = Convert.ToInt32(idmedico);
                
                txtIdPaciente.Text = codPaciente;//idpaciente.ToString();
                txtIdPromocion.Text = idpromocion;
                txtObservacion.Text = observacion;
                dtpFecha.Value = fechacita;

                cboTipoAtencion.Value = tipoatencion.ToString();
                cboEspecialidad.Value = especialidad.ToString();
                cboestado.SelectedIndex = Convert.ToInt16(listaCita[0].ESC_ID_ESTADO_CITA.ToString().Trim());
                CargarDatosMedico(especialidad);
                cboMedico.Value = idmedico.ToString();
                Cargar_Grid_Horario(idmedico.ToString());

            }
            else
            {
                msg = "ERROR AL CARGAR LOS DATOS DEL PACIENTE";
                Redirecionar(msg, ok);
                return;
            }
            /*
            var c = from p in BL_Adm_Cita.listar()
                    where p.CIT_ID_CITA == IdCita
                    select p;

            foreach (var S in c)
            {
                ObjectDataSource1.DataBind();
                ObjectDataSource2.DataBind();
                cboTipoAtencion.DataBind();
                cboEspecialidad.DataBind();
                txtIdPaciente.Text = S.ADM_PACIENTE.PAC_CODIGO_PACIENTE;
                Cargar_Datos_paciente(S.ADM_PACIENTE.PAC_CODIGO_PACIENTE);
                //cboPais.SelectedItem = cboPais.Items.FindByValue(S.PAI_ID_PAIS_PROCEDENCIA);
                // Int32 vItems = cboTipoAtencion.Items.Count;
                cboTipoAtencion.Value = S.GEN_TIPE_TIPO_ID_ATENCION;
                cboTipoAtencion.Text = S.GEN_TIPO_ATENCION.TIPA_DESCRIPCION;
                cboEspecialidad.Value = S.ESP_ID_ESPECIALIDAD;
                cboEspecialidad.Text = S.GEN_ESPECIALIDAD.ESP_NOMBRE;
                Carga_Medico(Convert.ToInt32(S.ESP_ID_ESPECIALIDAD));
                Id_Medico = Convert.ToInt32(S.PRM_PROGRAMACION_MEDICA.MED_ID_MEDICO);
                cboMedico.Value = S.PRM_PROGRAMACION_MEDICA.MED_ID_MEDICO;
                cboMedico.Text = S.PRM_PROGRAMACION_MEDICA.GEN_MEDICO.GEN_EMPLEADO.EMP_APELLIDO_PATERNO + ' ' + S.PRM_PROGRAMACION_MEDICA.GEN_MEDICO.GEN_EMPLEADO.EMP_APELLIDO_MATERNO + ' ' + S.PRM_PROGRAMACION_MEDICA.GEN_MEDICO.GEN_EMPLEADO.EMP_NOMBRES;
                txtIdPromocion.Text = Convert.ToString(S.MAR_PROMOCION);
                txtObservacion.Text = Convert.ToString(S.CIT_OBSERVACION);
                dtpFecha.Value = S.CIT_FECHA;

                Cargar_Grid_Horario(Convert.ToString(S.PRM_PROGRAMACION_MEDICA.MED_ID_MEDICO));
            }
             * */
        }
        catch (Exception ex)
        {
            titulo = "ERROR AL CARGAR EL DETALLE DE LA CITA";
            msg = ex.Message;
            MostrarComentario(msg, titulo);
        }
    }

    //private Int32 Cod_Medico(String id_prog)
    //{
    //    Int32 resul = 0;  
    //    clsPrm_Programacion_MedicaBL ent_prg_med = new clsPrm_Programacion_MedicaBL();
    //    var c = from p in ent_prg_med.listar()
    //            where p.PRM_ID_PROGRAMACION == id_prog
    //            select p;

    //    foreach (var S in c)
    //    {
    //        resul= Convert.ToInt32( S.MED_ID_MEDICO);
    //    }
    //    return resul;
    //}

    private Boolean CargarDatosPaciente(String codPaciente)
    {
        Boolean ok = false;
        try
        {
            if (idpaciente >= 0)
            {
                listaPacientes = new List<ADM_PACIENTE>();
                objFacadeCita = new FacadeRegistrarCita();
                listaPacientes = objFacadeCita.listarPaciente(codPaciente);
                if (listaPacientes != null || listaPacientes.Count > 0)
                {
                    String nombres, apepaterno, apematerno, tipodoc, nrodoc;
                    tipodoc = "DNI";
                    nombres = listaPacientes[0].PAC_NOMBRES;
                    apepaterno = listaPacientes[0].PAC_APELLIDO_PATERNO;
                    apematerno = listaPacientes[0].PAC_APELLIDO_MATERNO;
                    nrodoc = listaPacientes[0].PAC_NRO_DOCUMENTO;
                    txtNombreCompleto.Text = String.Format("{0} {1}, {2}", apepaterno, apematerno, nombres);
                    txtTipoDoc.Text = tipodoc;
                    txtNumeroDoc.Text = nrodoc;
                    ok = true;
                }
                else
                {
                    msg = "No Existen Datos Para El Paciente";
                    Redirecionar(msg, ok);
                }
            }
            else
            {
                ok = false;
            }
        }
        catch (Exception)
        {
            ok = false;
        }
        return ok;
    }

    private void CargarDatosMedico(int? especialidad)
    {
        Carga_Medico(Convert.ToInt32(especialidad));
    }

    private void Cargar_Datos_paciente2(string codigo)
    {
        if (codigo.Length > 0)
        {
            //clsPacienteBLcs BL_Paciente = new clsPacienteBLcs();
            var consulta = from P in objFacadeCita.listarPaciente()
                           where P.PAC_CODIGO_PACIENTE == codigo
                           select P;
            foreach (var S in consulta)
            {
                txtNombreCompleto.Text = S.PAC_APELLIDO_PATERNO + " " + S.PAC_APELLIDO_MATERNO + " " + S.PAC_NOMBRES;
                txtTipoDoc.Text = "DNI";
                txtNumeroDoc.Text = S.PAC_NRO_DOCUMENTO;
                //txtApellidoPaterno.Text = S.PAC_APELLIDO_PATERNO;
                //txtApellidoMaterno.Text = S.PAC_APELLIDO_MATERNO;
                //txtNombres.Text = S.PAC_PRIMER_NOMBRE + " " + S.PAC_SEGUNDO_NOMBRE;
                //dtpFechaNacimiento.Value = S.PAC_FECHA_NACIMIENTO;
                //txtDni.Text = S.PAC_NRO_DOCUMENTO;
                //txtTelefono.Text = S.PAC_TELEFONO;
                //txtCodigo.Text = S.PAC_CODIGO_PACIENTE;
                //txtObservacion.Text = S.PAC_OBSERVACION;
                //txtNroSeguro.Text = S.PAC_NRO_SEGURO;
                //idpaciente = S.PAC_ID_PACIENTE;
                //cboSexo.SelectedItem=cboSexo.Items.FindByValue("1");//S.TIPS_ID_TIPO_SEXO;
                //cboPais.SelectedItem=cboPais.Items.FindByValue(S.PAI_ID_PAIS_PROCEDENCIA);
                //cboDepatamentoPais.SelectedItem = cboPais.Items.FindByValue(S.DEPT_ID_DPTO_PROCEDENCIA);
                //cboProvincia.SelectedItem = cboProvincia.Items.FindByValue(S.PRO_ID_PROVINCIA_PROCEDENCIA);
                //cboDistrito.SelectedItem = cboDistrito.Items.FindByValue(S.DIST_ID_DISTRITO_PROCEDENCIA);
                //txtDomicilio.Text = S.PAC_DIRECCION_DOMICILIO;
                //txtDireccion.Text = S.PAC_DIRECCION_DOMICILIO;
                //txtmanzana.Text = S.PAC_MANZANA_DOMICILIO;
                //txtLote.Text = S.PAC_LOTE_DOMICILIO;
                //txtEtapa.Text = S.PAC_SECTOR_DOMICILIO;
                //txtPiso.Text = S.PAC_PISO_DOMICILIO;
                //txtNumero.Text = S.PAC_NRO_DOMICILIO;
                //cboProcedencia.SelectedItem = cboProcedencia.Items.FindByValue(S.TIP_ID_TIPO_PROCEDENCIA);
                //cboTipoOcupacion.SelectedItem = cboTipoOcupacion.Items.FindByValue(S.TIO_ID_TIPO_OCUPACION);
                //cboGradoInstruccion.SelectedItem = cboGradoInstruccion.Items.FindByValue(S.TGI_ID_GRADO_INSTRUCCION);
            }
        }

    }

    protected void Grabar(object sender, EventArgs e)
    {
        GrabarCita();
    }

    private void GrabarCita()
    {
        try
        {
            if (validarInsercion() == true)
            {
                ADM_CITA Ent_AdmCita = new ADM_CITA();
                ATE_ATENCION objAte_Atencion = new ATE_ATENCION();

                //verifica fecha
                DateTime fechaActual = DateTime.Parse(DateTime.Now.ToString("dd/MM/yyyy"));

                if (fechaActual.CompareTo(dtpFecha.Value) > 0 && vOperacion == "C")
                {
                    //Util.showmsg("La fecha de la cita no puede ser menor a la fecha actual", this.Page);
                    titulo = "Mensaje";
                    msg = "La Fecha de Cita No Debe Ser Menor A la Fecha Actual";
                    MostrarComentario(msg, titulo);
                    return;
                }

                listaPacientes = new List<ADM_PACIENTE>();
                objFacadeCita = new FacadeRegistrarCita();
                String codPaciente = txtIdPaciente.Text.Trim();
                listaPacientes = objFacadeCita.listarPaciente(codPaciente);
                idpaciente = Convert.ToInt32(listaPacientes[0].PAC_ID_PACIENTE.ToString());
                //var consulta1 = from P in objFacadeCita.listarPaciente()
                //                where P.PAC_CODIGO_PACIENTE == txtIdPaciente.Text
                //                select P;
                //foreach (var S in consulta1)
                //{
                //    idpaciente = S.PAC_ID_PACIENTE;
                //}

                if ((String)dgHorario.GetRowValues(dgHorario.FocusedRowIndex, new String[] { "Cita" }) != "Libre" && vOperacion == "C")
                {
                    //Util.showmsg("Horario Reservado!!!", this.Page);
                    titulo = "Mensaje";
                    msg = "Horario Reservado. Seleccione Otro.";
                    MostrarComentario(msg, titulo);
                    Cargar_Grid_Horario(cboMedico.SelectedItem.Value.ToString());
                    return;
                }

                DateTime fecha;
                int idcita, idtipoatencion, idespecialidad, idmedico;
                String estadocita, MAR_idPromocion, PRM_idPromocion, obs;

                estadocita = cboestado.Value.ToString().Trim();
                idcita = (vOperacion == "C") ? objFacadeCita.UltimoNumero() + 1 : (Int32)Session["IDCita"];
                fecha = dtpFecha.Date;
                idtipoatencion = Convert.ToInt32(cboTipoAtencion.SelectedItem.Value);
                idespecialidad = Convert.ToInt32(cboEspecialidad.SelectedItem.Value);
                idmedico = Convert.ToInt32(cboMedico.SelectedItem.Value);
                MAR_idPromocion = txtIdPromocion.Text;
                PRM_idPromocion = dgHorario.GetRowValues(dgHorario.FocusedRowIndex, "PRM_ID_PROGRAMACION").ToString();
                obs = txtObservacion.Text;

                Ent_AdmCita.CIT_ID_CITA = idcita;
                Ent_AdmCita.CIT_FECHA = fecha;
                Ent_AdmCita.PAC_ID_PACIENTE = idpaciente;
                Ent_AdmCita.ESC_ID_ESTADO_CITA = estadocita.Trim();
                Ent_AdmCita.GEN_TIPE_TIPO_ID_ATENCION = idtipoatencion;
                Ent_AdmCita.ESP_ID_ESPECIALIDAD = idespecialidad;
                Ent_AdmCita.MAR_ID_PROMOCION = MAR_idPromocion;
                Ent_AdmCita.PRM_ID_PROGRAMACION = PRM_idPromocion;
                Ent_AdmCita.CIT_OBSERVACION = obs;

                int idatencion = objFacadeCita.obtenerUltimoIdAtencion();
                objAte_Atencion.ATE_ID_ATENCION = idatencion;
                objAte_Atencion.ATE_FECHA_INGRESO = fecha;
                objAte_Atencion.SER_ID_SERVICIO_INGRESO = idtipoatencion;
                objAte_Atencion.MED_ID_MEDICO_INGRESO = idmedico;
                objAte_Atencion.ESP_ID_ESPECIALIDAD_MEDICO = idespecialidad;
                objAte_Atencion.CIT_ID_CITA = idcita;
                objAte_Atencion.PAC_ID_PACIENTE = idpaciente;
                objAte_Atencion.MED_ID_MEDICO_ATENCION = idmedico;
                if (vOperacion == "C")
                {
                    if (objFacadeCita.InsertarCita(Ent_AdmCita) == true)
                    {
                        //Util.showmsgconfirmacion("Nueva Cita Agregada!!!", this.Page);
                        ok = objFacadeCita.InsertarAtencion(objAte_Atencion);
                        msg = "Nueva Cita Agregada";
                        ok = true;
                        Redirecionar(msg, ok);
                    }
                    else
                    {
                        //Util.showmsg("Error: No se pudo registrar la cita!!!", this.Page);
                        titulo = "Mensaje";
                        msg = "Error: No se pudo registrar la cita";
                        MostrarComentario(msg, titulo);
                    }
                }
                else
                {
                    if (objFacadeCita.ModificarCita(Ent_AdmCita) == true)
                    {
                        //Util.showmsgconfirmacion("Nueva Cita Agregada!!!", this.Page);
                        ok = objFacadeCita.ModificarAtencion(objAte_Atencion);
                        titulo = "Mensaje";
                        msg = "Cita Modificada";
                        ok = true;
                        Redirecionar(msg, ok);
                    }
                    else
                    {
                        //Util.showmsg("Error: No se pudo registrar la cita!!!", this.Page);
                        titulo = "Mensaje";
                        msg = "Error: No se pudo Modificar la cita";
                        MostrarComentario(msg, titulo);
                    }
                }
            }

            ////verifica programcion medica
            //String IDProgMed = "";
            //try
            //{

            //    clsPrm_Programacion_MedicaBL BL_ProgMed = new clsPrm_Programacion_MedicaBL();
            //    var consulta = from P in BL_ProgMed.listar()
            //                   where P.MED_ID_MEDICO == Convert.ToInt32(cboMedico.SelectedItem.Value) && P.PRM_FECHA.Equals(dtpFecha.Value)
            //                   select P;
            //    foreach (var S in consulta)
            //    {
            //        IDProgMed = S.PRM_ID_PROGRAMACION;
            //    }
            //}
            //catch (Exception)
            //{ 


            //}

            //verifica id de paciente
            //if (IDProgMed.Length==0)
            //{
            //    Util.showmsg("No Hay Programacion Para este Medico!!!", this.Page);
            //    return;
            //}
        }
        catch (Exception ex)
        {
            titulo = "ERROR AL GRABAR LA CITA";
            msg = ex.Message;
            MostrarComentario(msg, titulo);
        }
    }

    protected void Cancelar(object sender, EventArgs e)
    {
        Session["Operacion"] = "C";
        Response.Redirect("wfCitaListado.aspx", true);
    }

    protected void cboEspecialidad_SelectedIndexChanged(object sender, EventArgs e)
    {
        try
        {
            int codEspecialidad = Convert.ToInt16(cboEspecialidad.SelectedItem.Value);
            Carga_Medico(codEspecialidad);
        }
        catch (Exception ex)
        {
            titulo = "ERROR";
            msg = ex.Message;
            MostrarComentario(msg, titulo);
        }

    }

    private void Carga_Medico(int IdEspecialidad)
    {
        try
        {
            listaMedicos = new List<V_Medico_Especialidad>();
            objFacadeCita = new FacadeRegistrarCita();
            listaMedicos = objFacadeCita.listarMedicoXEspecialidad(IdEspecialidad);
            cboMedico.DataSource = listaMedicos;
            cboMedico.ValueField = "MED_ID_MEDICO";
            cboMedico.TextField = "Nombre";
            cboMedico.DataBind();
        }
        catch (Exception ex)
        {
            titulo = "ERROR AL CARGAR LOS MEDICOS";
            msg = ex.Message;
            MostrarComentario(msg, titulo);
        }
        // cboMedico.Text = String.Empty;
        //ObjectDataSource3.SelectParameters.Clear();
        //ObjectDataSource3.SelectParameters.Add("ID_Especialidad",IdEspecialidad );
        //ObjectDataSource3.SelectMethod = "listar_Medico_Filtro";
        //ObjectDataSource3.Select();
        //ObjectDataSource3.DataBind();
    }

    //void Cargar_Horario()
    //{
    //    //clsAdmCitaBL BL_AdmCita = new clsAdmCitaBL();
    //    //dgHorario.DataSource = BL_AdmCita.listarHorario(dtpFecha.Date, Convert.ToInt32(cboMedico.SelectedItem.Value));
    //    //dgHorario.DataBind();
    //    ObjectDataSource4.SelectParameters.Clear();
    //    ObjectDataSource4.SelectParameters.Add("Fecha_Prog", dtpFecha.Date.ToString("MM/dd/yyyy"));
    //    ObjectDataSource4.SelectParameters.Add("id_medico", Convert.ToString(cboMedico.SelectedItem.Value));
    //    //"MED_ID_MEDICO"
    //    //  ObjectDataSource1.SelectParameters.Add("P_co_Tipo_Atencion", func.TraerCodigo(ddlTipoAtencion.Text));
    //    ObjectDataSource4.SelectMethod = "listarHorario";
    //    ObjectDataSource4.Select();
    //    ObjectDataSource4.DataBind();
    //}

    protected void dtpFecha_DateChanged(object sender, EventArgs e)
    {
        //verifica fecha
        try
        {
            DateTime fechaActual = DateTime.Parse(DateTime.Now.ToString("dd/MM/yyyy"));
            DateTime fecha = Convert.ToDateTime(dtpFecha.Value);
            int dif = 0;
            dif = Convert.ToInt32(DateTime.Compare(fecha, fechaActual).ToString());
            dgHorario.DataSource = null;
            dgHorario.DataBind();
            if (dif <= 0)
            {
                if (dif == -1)
                {
                    titulo = "Mensaje";
                    msg = "La Fecha de Cita No Debe Ser Menor A la Fecha Actual";
                    MostrarComentario(msg, titulo);
                    return;
                }
            }
        }
        catch (Exception ex)
        { 
            titulo = "ERROR AL SELECCIONAR LA FECHA";
            msg = ex.Message;
            MostrarComentario(msg, titulo);
        }
        
        
        //if (fechaActual.CompareTo(dtpFecha.Value) > 0)
        //{
        //    //Util.showmsg("La fecha de la cita no puede ser menor a la fecha actual", this.Page);
        //    titulo = "Mensaje";
        //    msg = "La fecha de la cita no puede ser menor a la fecha actual";
        //    MostrarComentario(msg, titulo);
        //    return;
        //}
        //cboMedico.SelectedItem = cboMedico.Items.FindByValue(cboMedico.Value);
        try
        {
            Cargar_Grid_Horario(Convert.ToString(cboMedico.SelectedItem.Value));
        }
        catch (Exception)
        {
            Cargar_Grid_Horario(Id_Medico.ToString());
        }
        //finally
        //{

        //}
        //if (cboMedico.SelectedItem.Value==null)
        //{
        //    Cargar_Grid_Horario(Convert.ToString(cboMedico.Value));
        //}
        //else
        //{
        //    Cargar_Grid_Horario(Convert.ToString(cboMedico.SelectedItem.Value));
        //}

    }

    protected void dgHorario_PageIndexChanged(object sender, EventArgs e)
    {
        // Cargar_Horario();
        String idmedico = cboMedico.SelectedItem.Value.ToString();
        Cargar_Grid_Horario(idmedico);
    }

    protected void dgHorario_SelectionChanged(object sender, EventArgs e)
    {
        try
        {
            //grid.FocusedRowIndex = grid.FindVisibleIndexByKeyValue(newKey);
            int index = dgHorario.FocusedRowIndex;
            if (index > -1)
            {
                String tipocita = dgHorario.GetRowValues(index, "Cita").ToString();
                if (tipocita != "Libre")
                {
                    titulo = "Mensaje";
                    msg = "El Horario elegido esta Reservado";
                    MostrarComentario(msg, titulo);
                    Cargar_Grid_Horario(cboMedico.SelectedItem.Value.ToString());
                }
                //if ((String)dgHorario.GetRowValues(dgHorario.FocusedRowIndex, new String[] { "Cita" }) != "Libre")
                //{
                //    // Response.Write("<script type=\"text/javascript\">alert('Este Horario esta reservado!');</script>");
                //    //String script = "<script type=\"text/javascript\">alert('Este Horario esta reservado!');</script>";
                //    // Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "alert", script);
                //    //ScriptManager.RegisterClientScriptBlock(this, this.GetType(), " ", "alert('Horario Reservado');", true); 
                //    //Util.showmsgconfirmacion("El Horario elegido esta Reservado", this.Page);
                //    titulo = "Mensaje";
                //    msg = "El Horario elegido esta Reservado";
                //    MostrarComentario(msg, titulo);
                //    // dgHorario.FocusedRowIndex = 0;
                //}
            }
            else
            {
                titulo = "Mensaje";
                msg = "Debe Seleccionar un Horario";
                MostrarComentario(msg, titulo);
            }
        }
        catch (Exception ex)
        {
            titulo = "ERROR AL SELECCIONAR UN HORARIO";
            msg = ex.Message;
            MostrarComentario(msg, titulo);
        }
    }

    // set up ADO.NET objects
    public void Cargar_Grid_Horario(String idMedico)
    {
        try
        {
            Negocio.cnDB Conex = new Negocio.cnDB();
            SqlConnection cn = new SqlConnection();
            Conex.ConexBD(cn);
            //cn = new SqlConnection("Server=(local);DataBase=Northwind;Integrated Security=SSPI");
            DataSet ds = new DataSet();
            //String campos = "TUR_DESCRIPCION, HOR_HORARIO, MED_ID_MEDICO, PRM_FECHA, Cita, CIT_FECHA, TUR_ID, HOR_ID, PRM_ID_PROGRAMACION ";
            String campos = "*";
            String tabla = "V_Horario_Cita";
            DateTime fechaActual = dtpFecha.Date;
            String sql = String.Format("select {2} from  {3} where CONVERT(CHAR,PRM_FECHA,103)='{0:dd/MM/yyyy}' and MED_ID_MEDICO={1}", fechaActual, idMedico, campos, tabla);
            SqlDataAdapter da = new SqlDataAdapter(sql, cn);
            SqlCommandBuilder cmdBldr = new SqlCommandBuilder(da);
            da.Fill(ds, tabla);
            dgHorario.DataSource = ds;
            dgHorario.DataMember = tabla;
            dgHorario.DataBind();
            if (dgHorario.VisibleRowCount == 0)
            {
                //Util.showmsg("No Existe programacion para el medico!!!", this.Page);
                titulo = "Mensaje";
                msg = "No Existe Programacion Para El Medico Seleccionado";
                MostrarComentario(msg, titulo);
            }
        }
        catch (Exception ex)
        {
            titulo = "ERROR AL MOSTRAR LOS HORARIOS";
            msg = ex.Message;
            MostrarComentario(msg, titulo);
        }
    }

    protected void BuscarPaciente(object sender, EventArgs e)
    {
        fl_Buscar = true;
    }

    protected void ObjectDataSource2_Selecting(object sender, ObjectDataSourceSelectingEventArgs e)
    {

    }

    protected void ObjectDataSource3_Selecting(object sender, ObjectDataSourceSelectingEventArgs e)
    {

    }

    protected void btnDetalle_Click1(object sender, EventArgs e)
    {
        try
        {
            if (txtIdPaciente.Text.Length == 0)
            {
                //Util.showmsg("Seleccione un Paciente!!!", this.Page);
                titulo = "Mensaje";
                msg = "Debe Seleccionar un Paciente";
                MostrarComentario(msg, titulo);
                return;
            }
            Session["Operacion"] = "M";
            Session["IDPaciente"] = Convert.ToInt32(txtIdPaciente.Text);
            pcDetallePaciente.ShowOnPageLoad = true;
            pcDetallePaciente.HeaderText = "Detalle Paciente";
            pcDetallePaciente.ContentUrl = "~/Clinica/wfDetallePaciente.aspx";
            //  pcDetallePaciente.ContentUrl=
        }
        catch (Exception ex)
        {
            titulo = "ERROR AL MOSTRAR EL DETALLE DEL PACIENTE";
            msg = ex.Message;
            MostrarComentario(msg, titulo);
        }
    }

    private bool validarInsercion()
    {
        bool Bool = true;

        if (txtIdPaciente.Value == null)
        {
            Bool = false;
            //Util.showmsg("El Id del Paciente debe ser ingresado", this.Page);           
            //msg = "El Id del Paciente debe ser ingresado";
            msg = "Debe Seleccionar un Paciente";
        }
        else if (cboTipoAtencion.Value == null)
        {
            Bool = false;
            //Util.showmsg("El Tipo de Atención debe ser ingresado", this.Page);
            //msg = "El Tipo de Atención debe ser ingresado";
            msg = "Debe Seleccionar un Tipo de Atencion";
        }
        else if (cboEspecialidad.Value == null)
        {
            Bool = false;
            //Util.showmsg("La Especialidad debe ser ingresada", this.Page);
            //msg = "La Especialidad debe ser ingresada";
            msg = "Debe Seleccionar una Especialidad";
        }
        else if (cboMedico.Value == null)
        {
            Bool = false;
            //Util.showmsg("El Médico debe ser ingresado", this.Page);
            //msg = "El Médico debe ser ingresado";
            msg = "Debe Seleccionar un Medico";
        }
        else if (dtpFecha.Value == null)
        {
            Bool = false;
            msg = "Debe Seleccionar una Fecha de Cita";
        }
        if (Bool == false)
        {
            titulo = "Mensaje";
            MostrarComentario(msg, titulo);
        }
        return Bool;
    }

    protected void cboTipoAtencion_SelectedIndexChanged(object sender, EventArgs e)
    {

    }

    private void MostrarComentario(String msg, String titulo)
    {
        pcMensaje.HeaderText = titulo;
        lblMensaje.Text = msg;
        ScriptManager.RegisterStartupScript(this, typeof(Page), "scriptkey", "pcMensaje.Show();", true);
    }

    private void Redirecionar(String msg, Boolean ok)
    {
        Session["msg"] = msg;
        Session["Grabacion"] = ok;
        Response.Redirect("wfCitaListado.aspx", false);
    }

}